package com.cskaoyan.javase._1extends._10final._3variable._1local;

import com.sun.org.apache.bcel.internal.generic.NEW;

/**
 * final修饰局部变量,表示局部常量
 * 表示它的取值不能再改变了,但是其它的使用方式,仍然不会改变
 *
 * 这里我们以方法中的局部变量为例子:
 * 方法中的局部位置有几个?
 *      1.方法体中
 *      2.形参列表中
 * 局部变量很少有修饰符能够修饰它,final就是其中之一.
 * 语法:
 * final 数据类型 变量名 = 值;
 *
 * 方法体中的局部常量只能在初始化时,赋值,然后再也不能改变取值了.
 * 方法形参中的局部常量,不意味着方法必须传入常量做参数
 *      而是表示该参数一旦传入方法,就成为一个常量了
 *      在方法体中禁止修改它!
 *
 * @since 14:50
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        test(100);
        int a = 100;
        test(a);
    }


    public static void test(final int num) {
        // 定义方法体中的局部变量
        final int a;
        // System.out.println(a);

        // 基本数据类型局部常量
        final int b = 100;
        System.out.println(b);
        // b = 200;
        // b++;

        // 引用数据类型局部常量
        // 引用s是一个常量了,不能再指向新的对象了
        final Student s = new Student();
        // final new Student();
        s.age = 100;
        // s = new Student();

        System.out.println(num);
        // num = 1000;

    }
}

class Student {
    int age;
}